/*
* nowcode OR64 求和
* 
描述
输入两个整数 n 和 m，从数列1，2，3.......n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来
输入描述：
每个测试输入包含2个整数,n和m
输出描述：
按每个组合的字典序排列输出,每行输出一种组合
* */
/*

* */
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    static int n,m,sum=0;
    static boolean[] choice;
    static void dfs(int x){
        if(m==sum){
            int cnt=0;
            for(int i=1;i<=n;i++){
                if(choice[i]==true){
                    System.out.print(i+" ");
                }
            }
            System.out.println();
            return;
        }
        if(sum>m||x>n){
            return;
        }
        //选x
        sum+=x;
        choice[x]=true;
        dfs(x+1);
        sum-=x;
        choice[x]=false;

        //不选x
        dfs(x+1);
    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        n=in.nextInt();
        m=in.nextInt();
        choice=new boolean[n+1];
        dfs(1);
    }
}